import App from './App'

// =====================================
//              引入框架依赖包
// =====================================
import {
	EsConfig,
	EsUtils,
	PagingApi,
	StorageManager,
	Mock,
	stdAjax
} from "@/static/js/Vui365.js"
// import EsBogusUtils from '@/static/js/EsBogusUtils.js'
// import CompareVersions from '@/static/js/CompareVersions.js'
// 手机登录组件
// import MobileLogin from "@/components/mobilelogin/mobilelogin.vue"

/**
 * 全局说明和注意事项
 * 1. 数据接口使用 Resetful 风格的格式规范。
 * 2. 全局属性使用 gp 前缀。gp = global prototype 的意思。
 * 3. 提供全局跳转页面方法的封装 gpGotoPage()。
 * 4. 提供全局跳转登录页面的方法封装 gpGotoLoginPage()。
 * 5. 提供全局 Ajax 请求的标准的公共方法 stdAjax(url,param,method)。
 * 6. 提供全局上拉分页的分页数据请求对象 PagingApi。
 */

// =====================================
//              全局变量配置
// =====================================
// 伪造数据总开关
// EsBogusUtils.enable = false;
// 版本更新总开关
// CompareVersions.enable = true;
// 全局配置信息（配置数据接口 URL 和业务域名 URL）
// Vui365.js 文件中的 EsConfig 配置项都可以在这里重设新值。
EsConfig.version = '1.1.3';
EsConfig.env = 'prod';
if (EsConfig.env == 'prod') {
	EsConfig.domain = "https://cyjl.dev.eme.cn/";
	EsConfig.apiBaseUrl = 'https://cyjl.dev.eme.cn/api.php/api/';
} else {
	EsConfig.domain = "http://yxcyjl.lh/";
	EsConfig.apiBaseUrl = 'http://yxcyjl.lh/index.php/api/';
}

// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
App.mpType = 'app'

// 默认用户信息（空数据规范格式）
let defaultUserInfo = {
	id: 0,
	nick_name: '未登录',
	avatar: 'https://cdn.uviewui.com/uview/album/1.jpg',
	game_level: 0,
	health_point: 0,
	integral: 0,
}

/**
 * 从服务器获取用户资料
 * 使用方法：this.userInfo = await this.LoginState.getUserProfile();
 */
LoginState.getUserProfile = async function () {
	if (!LoginState.isLogin()) {
		return defaultUserInfo;
	}
	let userInfo = LoginState.getLoginInfo();
	const ret = await stdAjax('/users/' + userInfo.id);
	console.log('[main.js] LoginState.getUserProfile 服务器返回ret=', ret);
	if (!ret.success) {
		return defaultUserInfo;
	}
	return ret.data;
}

// 挂载全局属性
Vue.prototype.EsConfig = EsConfig;
Vue.prototype.EsUtils = EsUtils;
Vue.prototype.PagingApi = PagingApi;
Vue.prototype.StorageManager = StorageManager;
Vue.prototype.Mock = new Mock(true);
Vue.prototype.stdAjax = stdAjax;

// 全局统一的跳转页面的方法。如果未能满足需求，可在页面中定义 gotoPage或者 jumpPage。
Vue.prototype.gpGotoPage = function (url, isTab = false) {
	if (isTab) {
		// 跳转到 Tab 页面
		uni.switchTab({
			url: url
		})
		return;
	}
	// 回退页面
	if (url == 'goback') {
		uni.navigateBack()
		return;
	}
	// 跳转到普通页面
	uni.navigateTo({
		url: url
	})
};

// 全局统一的提示并跳转登录的方法
Vue.prototype.gpGotoLoginPage = function (option = {}) {
	uni.showModal({
		content: option.content || '您未登录，请先登录。',
		showCancel: option.showCancel || false,
		confirmText: option.confirmText || '前往登录',
		success(ret) {
			if (ret.cancel) {
				return;
			}
			uni.navigateTo({
				url: '/pages/login/login'
			})
		},

	})
}

// Vue.prototype.CompareVersions = CompareVersions;
// 全局引入手机登录组件
// Vue.component("mobile-login", MobileLogin);

const app = new Vue({
	...App
})
app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
	const app = createSSRApp(App)

	// 挂载全局变量
	app.config.globalProperties.EsConfig = EsConfig;
	app.config.globalProperties.EsUtils = EsUtils;
	app.config.globalProperties.PagingApi = PagingApi;
	app.config.globalProperties.StorageManager = StorageManager;
	app.config.globalProperties.Mock = new Mock(true);
	app.config.globalProperties.stdAjax = stdAjax;
	app.config.globalProperties.gotoPage = function (url, isTab = false) {
		if (isTab) {
			// 跳转到 Tab 页面
			uni.switchTab({
				url: url
			})
			return;
		}
		// 跳转到普通页面
		uni.navigateTo({
			url: url
		})
	};
	// app.config.globalProperties.CompareVersions = CompareVersions;
	// 全局引入手机登录组件
	// app.component("mobile-login", MobileLogin);

	return {
		app
	}
}
// #endif